import {getLogin,getEmail,getRole,getLabel,getArticleType,getMenu} from "@/api/api";


//验证的数据的js文件

// 用户名验证是否存在于数据库
export function getLoginRule(rule,value,callback){
    // console.log(rule);
    // 判断是否存在这个属性
    // console.log('userId' in rule);
    let res = /^[a-zA-Z0-9]{4,16}$/;
    if (value === '' || value.length === 0){
        return callback(new Error(("请输入用户名")));//这里的Error必须大写使用内置的不然就会报错
    }else if(!res.test(value)){
        return callback(new Error('去除空格后长度必须在4~16之间'));
    }else{
        getLogin(value).then((res)=>{
            // console.log('res',res);
            if (res.code === 200){
                if (('userId' in rule)){
                    // console.log('rule',rule.userId);
                    if (res.data.user_id === rule.userId){
                        callback();
                    }
                }
                return callback(new Error('该账号已经存在'));
            }else{
                callback();
            }
        }).catch(()=>{
            return callback(new Error('程序出现错误！！！'));
        })
    }
}

//邮箱验证是否存在数据库
export function getEmailRule(rule,value,callback) {
    let res = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
    if (value === ''|| value.length === 0){
        return callback(new Error(("请输入邮箱")));
    }else if(!res.test(value)){
        return callback(new Error('必须要输入邮箱对应的格式'));
    }else{
        getEmail(value).then((res)=>{
            if (res.code === 200){
                if (('userId' in rule)){
                    console.log('rule',rule.userId);
                    if (res.data.user_id === rule.userId){
                        callback();
                    }
                }
                return callback(new Error('该邮箱已经存在'));
            }else{
                callback();
            }
        }).catch(()=>{
            return callback(new Error('程序出现错误！！！'));
        })
    }
}

//验证角色名称是否存在数据库
export function getRoleNameRule(rule,value,callback){
    console.log(rule);
    if (value === '' || value.length === 0){
        return callback(new Error(("请输入角色名称")));//这里的Error必须大写使用内置的不然就会报错
    }else{
        getRole(value).then((res)=>{
            // console.log('res',res);
            if (res.code === 200){
                if (('roleId' in rule)){
                    if (res.data.role_id === rule.roleId){
                        callback();
                    }
                }
                return callback(new Error('该角色已经存在'));
            }else{
                callback();
            }
        }).catch(()=>{
            return callback(new Error('程序出现错误！！！'));
        })
    }
}

// 验证标签名称是否存在数据库
export function getLabelNameRule(rule,value,callback){
    console.log(rule);
    if (value === '' || value.length === 0){
        return callback(new Error(("请输入名称")));//这里的Error必须大写使用内置的不然就会报错
    }else{
        getLabel(value).then((res)=>{
            // console.log('res',res);
            if (res.code === 200){
                if (('labelId' in rule)){
                    if (res.data.label_id === rule.labelId){
                        callback();
                    }
                }
                return callback(new Error('该名称已经存在'));
            }else{
                callback();
            }
        }).catch(()=>{
            return callback(new Error('程序出现错误！！！'));
        })
    }
}

// 验证文章名称是否存在数据库
export function getArticleTypeNameRule(rule,value,callback){
    console.log(rule);
    if (value === '' || value.length === 0){
        return callback(new Error(("请输入名称")));//这里的Error必须大写使用内置的不然就会报错
    }else{
        getArticleType(value).then((res)=>{
            // console.log('res',res);
            if (res.code === 200){
                if (('articleTypeId' in rule)){
                    if (res.data.article_type_id === rule.articleTypeId){
                        callback();
                    }
                }
                return callback(new Error('该名称已经存在'));
            }else{
                callback();
            }
        }).catch(()=>{
            return callback(new Error('程序出现错误！！！'));
        })
    }
}



export function getMenuRule(rule,value,callback,{menuId,menuName}){
    console.log("menuName",menuId,menuName);
    if (value === '' || value.length === 0){
        return callback(new Error(("请输入信息")));//这里的Error必须大写使用内置的不然就会报错
    }else{

        getMenu([menuId,menuName,value]).then((res)=>{
            // console.log('res',res.data);
            if (res.code === 200){

                if (res.data['status']){
                    return callback(new Error('该名称已经存在'));
                }
                callback();
            }else{
                callback();
            }
        }).catch(()=>{
            return callback(new Error('程序出现错误！！！'));
        })
    }
}




// 用户名验证
export function loginRule(rule,value,callback){
    let res = /^[a-zA-Z0-9]{4,16}$/;
    if (value === '' || value.length === 0){
        return callback(new Error(("请输入用户名")));//这里的Error必须大写使用内置的不然就会报错
    }else if(!res.test(value)){
        return callback(new Error('去除空格后长度必须在4~16之间'));
    }else{
        callback();
    }
}

// 密码验证
export function passRule(rule,value,callback){
    let res = /^[a-zA-Z0-9,~!@#$%^&*.]{4,16}$/;
    if (value === ''|| value.length === 0){
        return callback(new Error(("请输入密码")));
    }else if(!res.test(value)){
        return callback(new Error('去除空格后长度必须在4~16之间'));
    }else{
        callback();
    }
}

//手机号验证
export function phoneRule(rule,value,callback) {
    let res = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;    //11位手机号码正则
    if (value === ''|| value.length === 0){
        return callback(new Error(("请输入手机号")));
    }else if(!res.test(value)){
        return callback(new Error('必须要输入11位手机号'));
    }else{
        callback();
    }
}

//邮箱验证
export function emailRule(rule,value,callback) {
    let res = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
    if (value === ''|| value.length === 0){
        return callback(new Error(("请输入邮箱")));
    }else if(!res.test(value)){
        return callback(new Error('必须要输入邮箱对应的格式'));
    }else{
        callback();
    }
}